package Servlet;

import AccesoDatos.datDetalleDocumento;
import AccesoDatos.datDocumento;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import Entidades.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class sGrabarCarrito extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession sesion = request.getSession();
            HttpSession sesionUsuario = request.getSession();
            Vector<DetalleDocumento> ListaDetalle = (Vector<DetalleDocumento>) sesion.getAttribute("DetallePedido");
            Usuario objUsuario = (Usuario) sesionUsuario.getAttribute("usuario");

            double TotalPagar = 0;

            Documento objDoc = new Documento();
            objDoc.setIdUsuario(objUsuario.getIdUsuario());
            for (int i = 0; i < ListaDetalle.size(); i++) {
                TotalPagar += ListaDetalle.get(i).getCantidad() * ListaDetalle.get(i).getPrecio();
            }
            objDoc.setMonto(TotalPagar);

            int Conf = datDocumento.InsertarPedido(objDoc);
            int IdDocumento = datDocumento.UltimoIdDocumento();
            //out.println(IdDocumento);
            int Confirma = 0;
            if (Conf > 0) {
                for (int i = 0; i < ListaDetalle.size(); i++) {
                    
                    DetalleDocumento objeto = new DetalleDocumento();
                    objeto.setIdDocumento(IdDocumento);
                    objeto.setIdProducto(ListaDetalle.get(i).getIdProducto());
                    objeto.setCantidad(ListaDetalle.get(i).getCantidad());
                    objeto.setPrecio(ListaDetalle.get(i).getPrecio());
                    Confirma = datDetalleDocumento.InsertarDetallePedido(objeto);
                }               
                out.println("Se guardo satisfactoriamente");
            }

            if (Confirma > 0) {
                sesion.setAttribute("DetallePedido", null);
            }            
            
        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);


        } catch (Exception ex) {
            Logger.getLogger(sGrabarCarrito.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);


        } catch (Exception ex) {
            Logger.getLogger(sGrabarCarrito.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}
